iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0

昨天Day 8:.NET概念篇 - RESTful API是什麼?我們講了RESTful API的概念,那今天就來講講.NET API開發中會使用到的Controller和Dto的用途和寫法吧

Controller 是什麼

Controller(控制器)是.NET API中控制API路由的元件,用來負責接收前端的HTTP請求,然後根據請求的路由和HTTP方法來回傳相對應的功能&操作,是.NET建立Web API的核心元素之一

如何建立Controller的檔案

我們在Day 3:環境篇 - 使用 Visual Studio 建立一個Vue.js & .NET的專案 建立專案時,.NET專案就預設有一個Controllers的資料夾了,這個資料夾是專門放Controller相關的檔案,如果想新增一個新的Controller檔案,就對它點擊右鍵,選擇「加入(D)>控制器(T)」
https://ithelp.ithome.com.tw/upload/images/20230924/20141088PphYTTThdw.png

選擇「MVC控制器-空白」,點擊「加入」
https://ithelp.ithome.com.tw/upload/images/20230924/20141088cdPUchOk9s.png

通常如果開發User相關的API,Controller的檔案就會命名成「UserController.cs」;而開發Product相關的API則會命名成「ProductController.cs」,依此類推
https://ithelp.ithome.com.tw/upload/images/20230925/20141088ipkHSEUhFk.png

新增好UserController.cs後,將它打開,會看到它已經有幫你寫了一些Controller的架構。第5行的public class UserController : Controller是控制器的定義,它繼承自 Controller 基類,表示這是一個控制器類別
https://ithelp.ithome.com.tw/upload/images/20230924/20141088ZMAEW8x6wX.png

更改UserController.cs的內容

public class UserController : Controller的上方通常會有[ApiController]這個控制器屬性,表示這個控制器是一個 Web API 的控制器。

[Route("[controller]")]這個屬性比較特別,它是用來定義路由的屬性,而它的[controller]會自動對應到你controller前面的檔名,所以如果你的檔名是UserController.cs,[controller]對應到的路由就會是「/User」
https://ithelp.ithome.com.tw/upload/images/20230924/20141088G7Y5hx0ude.png

第10行是用來寫API的其中一種方式,因為IActionResult表示你API回傳的方法,你也可以改成其他種寫法,全看你想要什麼樣的API回傳格式。這裡我們先示範如何使用GET的方式取得資料,所以在第10行的上方新增一行[HttpGet],表示這隻API是使用HTTP GET的方式做操作
https://ithelp.ithome.com.tw/upload/images/20230924/20141088H5B4WmDj3p.png

那因為我們是使用IActionResult的方式做回傳,所以在return的地方要改成它的回傳格式,通常會使用Ok()表示API回應HTTP 200 OK,其中回應的內容可以是物件、字串、數字等。那這邊我們就改成return Ok("test OK");
https://ithelp.ithome.com.tw/upload/images/20230924/20141088K0dWDjll3o.png

如果都改完了,就點擊「開始」
https://ithelp.ithome.com.tw/upload/images/20230925/20141088oLCIos3gDn.png

在Swagger的地方會看到多了一個路由為「/User」的API,使用的HTTP方法是「GET」
https://ithelp.ithome.com.tw/upload/images/20230924/20141088dPcrt9oVrd.png

點開**/User**這隻API,點擊「Try it out>Execute」,看看它回傳的執行結果為何

可以看到它回傳的狀態碼為200,Response body則是我們剛剛輸入的"test OK"字串
https://ithelp.ithome.com.tw/upload/images/20230924/20141088qKdMJIa8GL.png


上一篇
Day 8:.NET概念篇 - RESTful API是什麼?
下一篇
Day 10:.NET概念篇 - Services 和依賴注入(DI)是什麼?
系列文
30天挑戰:從無到有,使用Vue.js和.NET建立一個Web登入系統19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言